﻿using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using CustomORM.Mapping;

namespace CustomORM.Tests.CustomORM.Mapping
{
    public class EntityToTableMapperExposed<T> : EntityToTableMapper<T> where T : new()
    {
        public new void Table(string tableName)
        {
            base.Table(tableName);
        }

        public new void Id(Expression<Func<T, object>> expression, string columnName)
        {
            base.Id(expression, columnName);
        }

        public new void Map(Expression<Func<T, object>> expression, string columnName)
        {
            base.Map(expression, columnName);
        }

        public new void References(Expression<Func<T, object>> expression, string columnName)
        {
            base.References(expression, columnName);
        }

        public new MappingExpression<T> HasMany(Expression<Func<T, object>> expression, string foreighnKeyName)
        {
            return base.HasMany(expression, foreighnKeyName);
        }

        public new void SetValueUsingExpression(MappingExpression<T> expression, T model, object newValue)
        {
            base.SetValueUsingExpression(expression, model, newValue);
        }

        public new T GetTypedModelFromObject(object modelObject)
        {
            return base.GetTypedModelFromObject(modelObject);
        }

        public static object PrepareDbObject(object value)
        {
            return EntityToTableMapper<T>.PrepareDbObject(value);
        }

        public new string GenerateSelectSQL()
        {
            return base.GenerateSimpleSelectSQL();
        }

        public new string GenerateSelectSQL(object keyValue)
        {
            return base.GenerateSimpleSelectWhereKey(keyValue);
        }        
    }
}